import axios from "axios";
import { getTokenName, messageTip, removeToken, messageConfirm,later } from "../util/util";

axios.defaults.baseURL = "http://localhost:8089"

export function doGet(url,params){
    return axios({
        method:"get",
        url:url,
        params:params,
        dataType:"json"
    });
}

export function doPost(url,data){
    return  axios({
        method:"post",
        url:url,
        data:data,
        dataType:"json"
    });
}

export function doPut(url,data){
    return axios({
        method:"put",
        url:url,
        data:data,
        dataType:"json"
    });
}

export function doDelete(url,params){
    return axios({
        method:"delete",
        url:url,
        params:params,
        dataType:"json"
    });
}

// 添加请求拦截器
axios.interceptors.request.use( (config) => {
    // 在发送请求之前做些什么，在请求头中放一个token（jwt），传给后端接口
    let token = window.sessionStorage.getItem(getTokenName());
    if (!token) { //前面加了一个！，表示token不存在，token是空的，token没有值，这个意思
        token = window.localStorage.getItem(getTokenName());
        if (token) {
            config.headers['rememberMe'] = true;
        }
    }
    if (token) { //表示token存在，token不是空的，token有值，这个意思
        config.headers['Authorization'] = token;
    }
    return config;
},  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 对axios接受数据做设置
axios.interceptors.response.use((response) => {
    // 对响应数据做处理,拦截token相应的结果window.location进行对应的处理
    if(response.data.code > 900){
        // token无法登录,所以我们这里清理掉它
        removeToken();
        // code大于900说明是token验证未通过
        messageConfirm(
            // 提示信息
            response.data.msg+',是否重新登录?',
            '登录状态异常'
          ).then(() => {
            // 点击确定按钮
            messageTip('即将跳转到登录页','success');
            later("/");
            })
            .catch(() => {
            // 点击取消按钮
            messageTip("已取消",'warning');
        });
        // 不要把失效的消息response回去了,直接返回空
        return;
    }
	return response;
},function (error){
    return Promise.reject(error);
});
